/**
 * Created by SImon on 2018/1/18.
 */
import wepy from 'wepy'

//1、哪些情况会触发页面跳转
//2、如何跳转页面
//3、页面传参
//4、页面栈

//打开新页面，调用 API wx.navigateTo 或使用<navigator />组件
//页面重定向，调用 API wx.redirectTo 或使用<navigator />组件
//页面返回，调用 API wx.navigateBack或用户按左上角返回按钮
//tarbar切换

//1、使用wx.navigateTo接口跳转,原页面保留。
//2、使用wx.redirectTo接口跳转，关闭原页面,不能返回。
//3.使用组件
//<navigator url="pages/logs/index" hover-class="navigator-hover">跳转</navigator>
//当该组件添加redirect属性时，等同于wx.redirectTo接口；默认redirect属性为false，等同于wx.navigateTo接口。
//用户点击左上角返回按钮，或调用wx.navigateBack接口返回上一页。

//小程序运行时你可以获取到已经初始化了的页面的属性和方法
//动态获取当前页面路径
//页面自动跳转
//你可以通过getCurrentPages()获取页面page对象，执行非当前页js里的方法
//总结
//
//wx.navigateTo会增加页面栈大小，直到页面栈大小为5
//wx.redirectTo不会增加页面栈大小
//wx.navigateBack会减少页面栈大小，直到页面栈大小为1

//1、返回
//2、带参数跳转
//3、重定向
//4、纪录页面栈

const Method ={
  NAVIGATE:0,
  REDIRECT:1,
  BACK:2
}
const Stack = []

const routes =[
  {
    path:"BACK",
    parameter: '',
    component:'BACK'
  },
  {
    path: 'index',
    parameter: '',
    component:'index'
  },
]




//1、跳转方式
//2、页面名
//3、参数
function router(methods,target,parameter){
  if(parameter!=''){
    parameter = 'query='+parameter
  }
    if(typeof methods === 'number'&&methods>=0&&methods<=2) {
      if(target!=''){
        var exist = false
        for(var i=0;i<routes.length;i++){
          if(routes[i].component == target){
            exist = true
            break;
          }
        }
        if(exist==false&&methods!=2){
          console.log('跳转页面未定义！')
          return;
        }
        switch (methods) {
          case Method.NAVIGATE:
            //if(Stack.length<10) {
              navigateTo(target, parameter)
            //}else{
            //  console.log('页面栈溢出！')
            //}
                break;
          case Method.REDIRECT:
            redirectTo(target,parameter)
            Stack.splice(0,Stack.length)
                break;
          case Method.BACK:
            navigateBack(target,parameter)
            Stack.splice(Stack.length-1,1);
                break;
          default:
            console.log('跳转方式错误')
        }
      }else{
        console.log('跳转页面不能为空！')
      }
    }else{
      console.log('跳转方式错误')
    }
}
function redirectTo(target,parameter){
  var url = ''
  if(parameter==''){
    url = target
  }else{
    url = target+"?"+parameter
  }
  wx.redirectTo({
    //目的页面地址
    url:url,
    success: function(res){
      if(res.errMsg=="redirectTo:ok"){
        Stack.splice(Stack.length-1,1,target)
        console.log(Stack)
      }
    }
  })

}
function navigateTo(target,parameter){
    var url = ''
    if(parameter==''){
      url = target
    }else{
      url = target+"?"+parameter
    }
    wx.navigateTo({
      //目的页面地址
      url:url,
      success: function(res){
        if(res.errMsg=="navigateTo:ok"){
            Stack.push(target)
            console.log(Stack)
        }
      }
  })
}
function navigateBack(target,parameter){
  wx.navigateBack({
    delta: parameter,
    success:function(res){
      if(res.errMsg=="navigateBack:ok"){
       // Stack.splice(parameter+1,Stack.length-parameter)
        //console.log(Stack)
      }
    }
  })

}
module.exports = {
  Router:router
}
